В iOS есть особенность при расчете 100vh, расчет не учитывает перекрывание странице нижнем меню, -webkit-fill-available помогает решить проблему

body {
  min-height: 100vh;
  /* mobile viewport bug fix */
  min-height: -webkit-fill-available;
}

html {
  height: -webkit-fill-available;
}